﻿#ifndef TLVPRJMODELPARSER_H
#define TLVPRJMODELPARSER_H

#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>

#include "../IStore/IStore.h"
#include "TlvDataModelTypeDef.h"

/**
 * Json 和 TlvPrjModel 互转解析器
 */
class TlvPrjModelParser : public IModelParser<TlvPrjModel>
{
public:
    explicit TlvPrjModelParser();

    // 转换成Json字符串
    QString toString(const TlvPrjModel& model) override;

private:
    // 解析 IICCmdModel
    IICCmdModel parseIICCmd(const QJsonObject &json);

    // 解析 TlvCmdModel
    TlvCmdModel parseTlvCmd(const QJsonObject &json);

    // 解析 CmdPageModel
    CmdPageModel parseCmdPage(const QJsonObject &json);

    // 解析 CodePageModel
    CodePageModel parseTlvCode(const QJsonObject &json);

    // 主解析函数：从 JSON 文档解析为 TlvPrjModel
    TlvPrjModel parseFromJson(const QJsonObject &json) override;

    // 将 IICCmdModel 转换为 JSON 对象
    QJsonObject iicCmdToJson(const IICCmdModel& cmd);

    // 将 TlvCmdModel 转换为 JSON 对象
    QJsonObject tlvCmdToJson(const TlvCmdModel& cmd);

    // 将 CmdPageModel 转换为 JSON 对象
    QJsonObject cmdPageToJson(const CmdPageModel& page);

    // 将 CodePageModel 转换为 JSON 对象
    QJsonObject tlvCodeToJson(const CodePageModel& code);
};

#endif // TLVPRJMODELPARSER_H
